1. Dall'Addizione alla Moltiplicazione
Nei contesti teorici, le trasformazioni lineari e le traslazioni (mappe affini) sono spesso gestite separatamente. Tuttavia, le librerie ad alte prestazioni come BLAS (Sotto-programmi di Base per l'Algebra Lineare) sono ottimizzate specificamente per prodotti tra matrice e vettore e tra matrici. Per sfruttare questi kernel, esprimiamo tutte le operazioni come:
$$T(v) = Av$$
2. Coordinate Omogenee
Per implementare uno spostamento in $\mathbf{R}^n$ tramite una matrice, espandiamo lo spazio a $\mathbf{R}^{n+1}$. Un vettore $[x, y, z]^T$ diventa $[x, y, z, 1]^T$. Questo "1 extra" permette di codificare la traslazione nell'ultima colonna di una matrice $(n+1) \times (n+1)$.
Una traslazione di $v_0 = [t_x, t_y, t_z]^T$ è rappresentata da:
$$A = \begin{bmatrix} 1 & 0 & 0 & t_x \\ 0 & 1 & 0 & t_y \\ 0 & 0 & 1 & t_z \\ 0 & 0 & 0 & 1 \end{bmatrix}$$
I numeri $0, 0, 0, 1$ nell'ultima riga svolgono un ruolo fondamentale. Quando $A$ moltiplica un vettore con un componente finale pari a $1$, il componente finale risultante è:
$(0 \cdot x) + (0 \cdot y) + (0 \cdot z) + (1 \cdot 1) = 1$
Questo garantisce che la natura "affine" dei dati sia preservata, consentendo operazioni sequenziali senza perdere l'integrità del sistema di coordinate.
3. Standard di Implementazione: BLAS
L'efficienza numerica si basa su sotto-programmi standardizzati. BLAS fornisce tre livelli di operazioni:
- Livello 1: Operazioni tra vettori (ad esempio, prodotti scalari).
- Livello 2: Operazioni tra matrice e vettore ($Ax+b$).
- Livello 3: Operazioni tra matrici ($AB+C$), che sono le più dense dal punto di vista computazionale e più efficienti a livello hardware.